package com.pancm.datacollector.config;

import java.util.List;
import java.util.Map;

/**
 * 配置管理接口
 * 定义配置项管理的核心功能
 */
public interface ConfigurationManager {
    /**
     * 获取字符串类型的配置值
     * @param key 配置项的键
     * @return 配置项的值，如果不存在返回null
     */
    String getStringValue(String key);
    
    /**
     * 获取字符串类型的配置值
     * @param key 配置项的键
     * @param defaultValue 默认值
     * @return 配置项的值，如果不存在返回默认值
     */
    String getStringValue(String key, String defaultValue);
    
    /**
     * 获取整数类型的配置值
     * @param key 配置项的键
     * @return 配置项的值，如果不存在或转换失败返回null
     */
    Integer getIntegerValue(String key);
    
    /**
     * 获取整数类型的配置值
     * @param key 配置项的键
     * @param defaultValue 默认值
     * @return 配置项的值，如果不存在或转换失败返回默认值
     */
    Integer getIntegerValue(String key, Integer defaultValue);
    
    /**
     * 获取布尔类型的配置值
     * @param key 配置项的键
     * @return 配置项的值，如果不存在返回null
     */
    Boolean getBooleanValue(String key);
    
    /**
     * 获取列表类型的配置值
     * @param key 配置项的键
     * @return 配置项的值，如果不存在返回空列表
     */
    <T> List<T> getListValue(String key);
    
    /**
     * 获取Map类型的配置值
     * @param key 配置项的键
     * @return 配置项的值，如果不存在返回空Map
     */
    <K, V> Map<K, V> getMapValue(String key);
} 